package com.demo.java.OD101_150.OD103;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【英文输入法】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145692304
 */
public class OdMain {
    /**
     * 处理输入的字符串，找到以 targetStr 开头的单词并排序输出
     *
     * @param value     输入的字符串
     * @param targetStr 要匹配的目标字符串
     */
    public static void solve(String value, String targetStr) {
        // 如果输入为空或长度为0，输出错误信息并返回
        if (value == null || value.isEmpty()) {
            System.out.println("input error");
            return;
        }

        // 存储符合条件的单词
        List<String> resultList = new ArrayList<>();
        StringBuilder wordSb = new StringBuilder();  // 用来构建单词

        // 遍历输入字符串，提取单词
        for (int j = 0; j < value.length(); ++j) {
            char ch = value.charAt(j);

            // 如果是字母，拼接到当前单词中
            if (Character.isLetter(ch)) {
                wordSb.append(ch);
            } else {
                // 如果遇到非字母字符，说明一个单词结束，将它添加到列表中
                if (wordSb.length() > 0) {
                    resultList.add(wordSb.toString());
                    wordSb.setLength(0);  // 清空 StringBuilder，为下一个单词做准备
                }
            }
        }

        // 处理最后一个单词（如果字符串最后是字母）
        if (wordSb.length() > 0) {
            resultList.add(wordSb.toString());
        }

        // 存储以 targetStr 开头的单词
        List<String> filteredWords = new ArrayList<>();
        for (String word : resultList) {
            if (word.startsWith(targetStr)) {
                filteredWords.add(word);
            }
        }

        // 对以 targetStr 开头的单词排序
        Collections.sort(filteredWords);

        // 输出结果
        if (!filteredWords.isEmpty()) {
            // 输出每个符合条件的单词，以空格隔开
            for (String word : filteredWords) {
                System.out.print(word + " ");
            }
            System.out.println();
        } else {
            // 如果没有找到符合条件的单词，输出 targetStr
            System.out.println(targetStr);
        }
    }

    public static void main(String[] args) {
        try {
            // 创建 Scanner 对象读取输入
            Scanner s = new Scanner(System.in);

            // 读取输入的字符串和目标字符串
            String value = s.nextLine();
            String targetStr = s.nextLine();

            // 调用 solve 方法处理
            solve(value, targetStr);
        } catch (Exception e) {
            // 捕获异常并输出错误信息
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}